Include a header file required for build on mac 10.4
[supercollider.git] / Help / help-scripts / Show All Documented Extension Classes.html
blob7fed8f02b0220d4f788e3f7210e1bad5d1351152
1 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
2 <html>
3 <head>
4 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
5 <meta http-equiv="Content-Style-Type" content="text/css">
6 <title></title>
7 <meta name="Generator" content="Cocoa HTML Writer">
8 <meta name="CocoaVersion" content="824.42">
9 <style type="text/css">
10 p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #a71e12}
11 p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; min-height: 12.0px}
12 p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco}
13 p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
14 p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #606060}
15 p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 9.0px Monaco; color: #0019b7}
16 span.s1 {color: #0019b7}
17 span.s2 {color: #606060}
18 span.s3 {color: #000000}
19 span.Apple-tab-span {white-space:pre}
20 </style>
21 </head>
22 <body>
23 <p class="p1">// trolls the help extension help directories and compiles a doc with links</p>
24 <p class="p2"><br></p>
25 <p class="p3"><span class="s1">var</span> path, doc, result, headingIndices, headingFont, excluded, addFunc;</p>
26 <p class="p3"><span class="s1">var</span> underlineStarts, underlineRanges, titleString, thirdParty, thirdPartyIndex;</p>
27 <p class="p3"><span class="s1">var</span> extensions, extensionsIndex, extensionFunc, extensionsRoots, extensionsFolders;</p>
28 <p class="p3"><span class="s1">var</span> undoc, undocIndex;</p>
29 <p class="p2"><br></p>
30 <p class="p3">path = <span class="s1">PathName</span>.new(<span class="s2">"Help/"</span>);</p>
31 <p class="p4"><br></p>
32 <p class="p3">headingIndices = <span class="s1">List</span>.new;</p>
33 <p class="p2"><br></p>
34 <p class="p5"><span class="s3">titleString = </span>"A Generated List of all Documented Extension Classes"<span class="s3">;</span></p>
35 <p class="p5"><span class="s3">undoc = </span>"*Show All Undocumented Classes"<span class="s3">;</span></p>
36 <p class="p2"><br></p>
37 <p class="p5"><span class="s3">result = titleString ++ </span><span class="s1">Char</span><span class="s3">.nl ++ </span><span class="s1">Char</span><span class="s3">.nl ++ </span>"Below is an automatically generated list of all documented extension classes (i.e. those whose class and help files are in /Library/Application Support/SuperCollider/Extensions or ~/Library/Application Support/SuperCollider/Extensions), sorted by directory.\n\nFor a list of undocumented classes click here:"<span class="s3"> + </span><span class="s1">Char</span><span class="s3">.tab;</span></p>
38 <p class="p2"><br></p>
39 <p class="p3">undocIndex = result.size;</p>
40 <p class="p2"><br></p>
41 <p class="p3">result = result ++ undoc ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl;</p>
42 <p class="p2"><br></p>
43 <p class="p1">// put included third party libraries at the end</p>
44 <p class="p5"><span class="s3">excluded = [</span><span class="s1">PathName</span><span class="s3">(</span>"Help/crucial"<span class="s3">), </span><span class="s1">PathName</span><span class="s3">(</span>"Help/JITLib"<span class="s3">)];</span></p>
45 <p class="p2"><br></p>
46 <p class="p1">// this func trolls the directory and harvests the descriptions</p>
47 <p class="p6"><span class="s3">addFunc = {</span>|folderPathName|</p>
48 <p class="p3"><span class="Apple-tab-span"> </span><span class="s1">var</span> classFiles, heading, currentFile, currentFileString, temp;</p>
49 <p class="p3"><span class="Apple-tab-span"> </span>classFiles = <span class="s2">""</span>;<span class="Apple-tab-span"> </span></p>
50 <p class="p2"><span class="Apple-tab-span"> </span></p>
51 <p class="p3"><span class="Apple-tab-span"> </span>folderPathName.files.do({<span class="s1">|item|</span></p>
52 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s1">var</span> nameString, nameIndex, end;</p>
53 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>nameString = item.fileName.split($.).at(0);</p>
54 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>if(nameString.asSymbol.asClass.notNil, {<span class="Apple-converted-space"> </span></p>
55 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFile = <span class="s1">File</span>(item.fullPath, <span class="s2">"r"</span>);</p>
56 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFile.readAllString;</p>
57 <p class="p1"><span class="s3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// fix accent acute (remove it)</p>
58 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString.findAll(<span class="s2">"\'8"</span>).reverseDo({ <span class="s1">|i|</span></p>
59 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.copyFromStart(i-2) ++</p>
60 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString.copyToEnd(i+2);</p>
61 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});</p>
62 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFile.close;</p>
63 <p class="p1"><span class="s3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// strip RTF gunk</p>
64 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.stripRTF;</p>
65 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>nameIndex = currentFileString.find(nameString);</p>
66 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>if(nameIndex.notNil, {</p>
67 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.drop(nameIndex);</p>
68 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>end = currentFileString.find(<span class="s2">"\n"</span>);</p>
69 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>if( end.notNil, {</p>
70 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>end = end - 1;</p>
71 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.copyFromStart(end);</p>
72 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});</p>
73 <p class="p1"><span class="s3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// remove tab stops</p>
74 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.reject({<span class="s1">|item|</span>item == $\t});</p>
75 <p class="p1"><span class="s3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// remove commas, hyphens, and spaces</p>
76 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>while({(currentFileString[nameString.size] == $,) ||<span class="Apple-converted-space"> </span></p>
77 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(currentFileString[nameString.size] == $ ) ||<span class="Apple-converted-space"> </span></p>
78 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(currentFileString[nameString.size] == $-)},</p>
79 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>{currentFileString = currentFileString.copyFromStart(nameString.size -1) ++</p>
80 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString.copyToEnd(nameString.size + 1);</p>
81 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</p>
82 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>);</p>
83 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>if(currentFileString.size &gt; nameString.size, {</p>
84 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.insert(nameString.size, <span class="s2">"\t"</span>);</p>
85 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});},<span class="Apple-converted-space"> </span></p>
86 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>{<span class="Apple-tab-span"> </span><span class="Apple-converted-space"> </span></p>
87 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = nameString;<span class="Apple-converted-space"> </span></p>
88 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</p>
89 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>);</p>
90 <p class="p1"><span class="s3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// add square brackets</p>
91 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.insert(nameString.size, <span class="s2">"]"</span>);</p>
92 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>currentFileString = currentFileString.insert(0, <span class="s2">"["</span>);</p>
93 <p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
94 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>classFiles = classFiles ++ <span class="s1">Char</span>.tab ++ currentFileString ++ <span class="s1">Char</span>.nl;</p>
95 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});</p>
96 <p class="p3"><span class="Apple-tab-span"> </span>});</p>
97 <p class="p3"><span class="Apple-tab-span"> </span>if(classFiles.size &gt; 0, {</p>
98 <p class="p1"><span class="s3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>//heading = folderPathName.fileName;</p>
99 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>heading = folderPathName.fullPath;</p>
100 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>headingIndices.add([result.size, heading.size]);</p>
101 <p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
102 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>result = result ++ heading ++ <span class="s1">Char</span>.nl ++ <span class="s1">Char</span>.nl ++ classFiles ++ <span class="s1">Char</span>.nl;</p>
103 <p class="p3"><span class="Apple-tab-span"> </span>});</p>
104 <p class="p3"><span class="Apple-tab-span"> </span>folderPathName.foldersWithoutCVS.do({<span class="s1">|folder|</span><span class="Apple-converted-space"> </span></p>
105 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>if(excluded.detect({<span class="s1">|item|</span> item.fileName == folder.fileName; }).isNil,<span class="Apple-converted-space"> </span></p>
106 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>{addFunc.value(folder);}</p>
107 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>);<span class="Apple-converted-space"> </span></p>
108 <p class="p3"><span class="Apple-tab-span"> </span>});</p>
109 <p class="p3">};</p>
110 <p class="p2"><br></p>
111 <p class="p1">//addFunc.value(path);</p>
112 <p class="p2"><br></p>
113 <p class="p1">// Check for Extensions Folders and add if they exist</p>
114 <p class="p2"><br></p>
115 <p class="p5"><span class="s3">extensionsRoots = [</span><span class="s1">PathName</span><span class="s3">(</span>"/Library/Application Support/SuperCollider/Extensions"<span class="s3">),<span class="Apple-converted-space"> </span></span></p>
116 <p class="p5"><span class="s3"><span class="Apple-tab-span"> </span></span><span class="s1">PathName</span><span class="s3">(</span>"~/Library/Application Support/SuperCollider/Extensions"<span class="s3">)];</span></p>
117 <p class="p2"><br></p>
118 <p class="p3">extensionsRoots.any({<span class="s1">|item|</span> item.pathMatch.size &gt; 0 }).if({</p>
119 <p class="p2"><span class="Apple-tab-span"> </span></p>
120 <p class="p3"><span class="Apple-tab-span"> </span>extensionsFolders = <span class="s1">List</span>.new;</p>
121 <p class="p3"><span class="Apple-tab-span"> </span>extensionFunc = { <span class="s1">|path|</span></p>
122 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>path.folders.do({<span class="s1">|item|</span><span class="Apple-converted-space"> </span></p>
123 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>item.fullPath.containsi(<span class="s2">"help"</span>).if({ extensionsFolders.add(item)},{<span class="Apple-converted-space"> </span></p>
124 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>extensionFunc.value(item);});</p>
125 <p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});</p>
126 <p class="p3"><span class="Apple-tab-span"> </span>};</p>
127 <p class="p2"><span class="Apple-tab-span"> </span></p>
128 <p class="p3"><span class="Apple-tab-span"> </span>extensionsRoots.do({<span class="s1">|item|</span> extensionFunc.value(item); });</p>
129 <p class="p3"><span class="Apple-tab-span"> </span>result = result ++ <span class="s2">"\n\n"</span>;<span class="Apple-tab-span"> </span></p>
130 <p class="p1">//<span class="Apple-tab-span"> </span>result = result ++ "\n------------------------\n\n";</p>
131 <p class="p1">//<span class="Apple-tab-span"> </span>extensions = "Extensions:";</p>
132 <p class="p1">//<span class="Apple-tab-span"> </span>extensionsIndex = result.size;</p>
133 <p class="p1">//<span class="Apple-tab-span"> </span>result = result ++ extensions + Char.nl + Char.nl;</p>
134 <p class="p3"><span class="Apple-tab-span"> </span>extensionsFolders.do({<span class="s1">|item|</span> addFunc.value(item);});</p>
135 <p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
136 <p class="p3">});</p>
137 <p class="p2"><br></p>
138 <p class="p1">// Third Party Libraries</p>
139 <p class="p1">//result = result ++ "\n------------------------\n\n";</p>
140 <p class="p1">//</p>
141 <p class="p1">//thirdParty = "Included Third Party Libraries:";</p>
142 <p class="p1">//thirdPartyIndex = result.size;</p>
143 <p class="p1">//</p>
144 <p class="p1">//result = result ++ thirdParty + Char.nl + Char.nl;</p>
145 <p class="p1">//</p>
146 <p class="p1">//excluded.do({|item| addFunc.value(item); result = result ++ "\n------------\n\n";});</p>
147 <p class="p2"><br></p>
148 <p class="p1">//doc = Document.new("Documented Classes");</p>
149 <p class="p2"><br></p>
150 <p class="p1">// this sets basic tab stops and line spacing</p>
151 <p class="p5"><span class="s3">doc = </span><span class="s1">Document</span><span class="s3">.open(</span><span class="s1">File</span><span class="s3">.getcwd ++ </span>"/"<span class="s3"> ++ </span>"Help/help-scripts/tab-template.rtf"<span class="s3">);</span></p>
152 <p class="p2"><br></p>
153 <p class="p5"><span class="s3">doc.title = </span>"Documented Extension Classes"<span class="s3">;</span></p>
154 <p class="p2"><br></p>
155 <p class="p1">// set the fonts</p>
156 <p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica"</span>, 12));</p>
157 <p class="p3">doc.string = result;</p>
158 <p class="p2"><br></p>
159 <p class="p3">doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 18), 0, titleString.size);</p>
160 <p class="p2"><br></p>
161 <p class="p1">//doc.setFont(Font("Helvetica-Bold", 16), thirdPartyIndex, thirdParty.size);</p>
162 <p class="p2"><br></p>
163 <p class="p3">extensionsIndex.notNil.if({</p>
164 <p class="p3"><span class="Apple-tab-span"> </span>doc.setFont(<span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 16), extensionsIndex, extensions.size);</p>
165 <p class="p3">});</p>
166 <p class="p2"><br></p>
167 <p class="p3">headingFont = <span class="s1">Font</span>(<span class="s2">"Helvetica-Bold"</span>, 14);</p>
168 <p class="p3">headingIndices.do({<span class="s1">|item|</span> doc.setFont(headingFont, *item)});</p>
169 <p class="p2"><br></p>
170 <p class="p1">// find the underlines for help links. Apparently faster than storing them above.</p>
171 <p class="p3">underlineStarts = doc.string.findAll(<span class="s2">"["</span>).reverse + 1;</p>
172 <p class="p3">underlineRanges = doc.string.findAll(<span class="s2">"]"</span>).reverse - underlineStarts;</p>
173 <p class="p2"><br></p>
174 <p class="p3">underlineStarts.do({<span class="s1">|item, i|</span> doc.selectRange(item, underlineRanges[i]); doc.underlineSelection;});</p>
175 <p class="p2"><br></p>
176 <p class="p3">doc.selectRange(undocIndex, undoc.size);<span class="Apple-converted-space"> </span></p>
177 <p class="p3">doc.underlineSelection;</p>
178 <p class="p2"><br></p>
179 <p class="p3">doc.selectRange(0,0);</p>
180 <p class="p3">doc.editable_(<span class="s1">false</span>);</p>
181 <p class="p2"><br></p>
182 <p class="p1">// keeps window title as it should be!</p>
183 <p class="p3">doc.mouseDownAction = { {doc.title = <span class="s2">"Documented Classes"</span>;}.defer(0.00001) };</p>
184 <p class="p2"><br></p>
185 <p class="p3">{doc.removeUndo;}.defer(0.001);</p>
186 </body>
187 </html>